<?php

namespace App\Model;

use EasySwoole\ORM\AbstractModel;

/**
 * RelationModel
 * Class RelationModel
 * Create With ClassGeneration
 * @property int $id //
 * @property string $user_id //
 * @property int $status //
 * @property string $name //
 */
class RelationModel extends BaseModel
{
	protected $tableName = 'relation';


    /**
     * $value mixed 是原值
     * $data  array 是当前model所有的值
     */
    protected function getStatusAttr($value, $data)
    {
        $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核'];
        return $status[$value];
    }

    /** 自定义的获取器(字段不能存在) 需要append调用
     * @param $value
     * @param $data 本次条数的数据
     * @return string
     * *    author 韩天尊
     *
     * get()->append(["custom"])
     */
    protected function getCustomAttr($value, $data){
        return $data["id"];
    }

	public function addData(string $user_id, int $status, string $name): self
	{
		$data = [
		    'user_id'=>$user_id,
		    'status'=>$status,
		    'name'=>$name,
		];
		$model = new self($data);
		$model->save();
		return $model;
	}


    /**
     * 本想通过模型事件结合实行插入或者更新ElasticSearch 单条插入可以  但是更新本身是1对多 不行
     * 综合再三  只能使用代码作为中间层读出mysql数据再对比写入或者更新ElasticSearch (可上mysql主从解决数据库压力问题)
     */

    /** 插入后事件
     * @param $model
     * @param $res
     * *    author 韩天尊
     */
    protected static function onAfterInsert($model, $res)
    {
        /*$lastResult = $model->lastQueryResult();
        $insertId = $lastResult->getLastInsertId();
        var_dump($insertId);//插入的id
        var_dump($model->getOriginData());//插入的数据*/
    }

    /** 更新后事件
     * @param $model
     * @param $res
     * *    author 韩天尊
     */
    protected static function onAfterUpdate($model, $res)
    {
        /*$lastResult = $model->lastQueryResult();
        $insertId = $lastResult->getLastInsertId();

        //获取执行影响的数据条数  update,delete等方法使用
        //var_dump($lastResult->getAffectedRows());

        var_dump($model);

        var_dump($insertId);//id?
        var_dump($model->lastQueryResult);*/
    }
}

